package test16;
//先用 DataOutputStream 向文件中写入一个字符、一个整数、
//一个双精度浮点数、一个 boolean 变量
//再用 RandomAccessFile 对文件中的内容进行随机读取。
//一个字符占 2 个字节，一个 int 变量占 4 个字节,
//一个 double 变量占 8 个字节，一个 boolean 量占 1 个字节
import java.io.*;
public class Test5_3
{
    public static void main(String args[])
    {
        try
        {
            FileOutputStream fout=new FileOutputStream("raf.txt");
            DataOutputStream dout=new DataOutputStream(fout);
            dout.writeChar('中');//写入一个字符 ,2 个字节
            dout.writeInt(1234);//写入一个 int 值 ,4 个字节
            dout.writeDouble(3.14159);//写入一个 double 值 ,8 个字节
            dout.writeBoolean(true);//写入一个 boolean 值 ,1 个字节
            fout.close();
            dout.close();
            //创建 RandomAccessFile 对象，对文件进行只读操作
            //******Found******
            RandomAccessFile raf=new RandomAccessFile("raf.txt","r");
            //输出文件的长度，以字节为单位
            //******Found******
            System.out.println("文件的长度为:"+raf.read()+"字节");
            //读取整数 1234
            raf.seek(2);
            //******Found******
            System.out.println("当前文件指针="+raf.getFilePointer());
            int i=raf.readInt();
            System.out.println("读取整数:"+i);
            //读取双精度数 3.14159
            //******Found******
            raf.seek(6);
            System.out.println("当前文件指针="+raf.getFilePointer());
            double d=raf.readDouble();
            System.out.println("读取双精度浮点数:"+d);
            //读取字符'中'
            raf.seek(0);
            System.out.println("当前文件指针="+raf.getFilePointer());
            char c=raf.readChar();
            System.out.println("读取字符:"+c);
            //读取 boolean 值
            //******Found******
            raf.seek(14);
            System.out.println("当前文件指针="+raf.getFilePointer());
                //******Found******
            boolean b=raf.readBoolean();
            System.out.println("读取 boolean 值:"+b);
        }
        catch(IOException ex) { }
    }
}